class Solution {
public:
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    int m;
    int n;
    int prev;
    vector<vector<int>> floodFill(vector<vector<int>>& i, int sr, int sc, int color) {
        if(i[sr][sc]==color) return i;
        m=i.size();
        n=i[0].size();
        prev=i[sr][sc];
        dfs(i,sr,sc,color);
        return i;
    }

    void dfs(vector<vector<int>>& i, int sr, int sc, int color)
    {
        i[sr][sc]=color;
        for(int k=0;k<4;++k)
        {
            int x=dx[k]+sr;
            int y=dy[k]+sc;
            if(x>=0&&x<m&&y>=0&&y<n&&i[x][y]==prev)
                dfs(i,x,y,color);
        }
    }
};
